package bold.module.protobuf;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;


/**
 * 1、配置环境到bin
 * cmd 命令  protoc -I=L:\protobuf --java_out=L:\protobuf L:\protobuf\PersonMsg.proto
 * 注意 带编译文件 不能重名
 */
public class Main {
    public static void main(String[] args) throws IOException {

        // 按照定义的数据结构，创建一个Person
        Rpc.Request request = Rpc.Request.newBuilder()
                .setId(1)
                .setName("叉叉哥")
                .build();


        // 将数据写到输出流，如网络输出流，这里就用ByteArrayOutputStream来代替
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        request.writeTo(output);

        // -------------- 分割线：上面是发送方，将数据序列化后发送 ---------------

        final byte[] byteArray = output.toByteArray();

        // -------------- 分割线：下面是接收方，将数据接收后反序列化 ---------------

        // 接收到流并读取，如网络输入流，这里用ByteArrayInputStream来代替
        ByteArrayInputStream input = new ByteArrayInputStream(byteArray);

        // 反序列化
        Rpc.Request requestResult = Rpc.Request.parseFrom(input);

        System.out.println(requestResult.getId());
        System.out.println(requestResult.getName());
    }
}
